<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

<div id="app">
 <cpn></cpn>
  <cpn></cpn>
  <cpn ref="abc"></cpn>
  <button @click="btnClick">按钮</button>
</div>


<!--template-->
<template id="cpn">
  <div>我是子组件</div>
</template>


  <script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:'#app',
    data:{
      message:"message",

    },
    methods:{
      btnClick(){
        // console.log(this.$children);
        //使用 this.$children 获取子组件对象的数组  使用下标获取子组件
        //是用下标 不是很好 当页面结构发生变化时 就获取不到正确的组件
        // 一般只有要 拿到所有的子组件的时候 用的到这种方式
        this.$children[0].showMessage()

        //2 $refs   组件加上ref属性 可以直接选择到该组件 abc为子组件ref的值
        // $refs -->对象类型 默认是一个空对象
        console.log(this.$refs.abc);

      }

    },
    components:{

      cpn:{
        template: '#cpn',
        methods: {
          showMessage(){
            console.log('showMessage');
          }
        }
      }

    }

  })
</script>`

</body>
</html>